<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>IDA SDK: fixup.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">IDA SDK
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="files.html"><span>Header&#160;Files</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a>  </div>
  <div class="headertitle">
<div class="title">fixup.hpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Functions that deal with fixup information. </p>
<p>A loader should setup fixup information using <a class="el" href="fixup_8hpp.html#a16e38ac5dc6d9ab1620b0dc0dbcd107f" title="Set fixup information. ">set_fixup()</a>. </p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfixup__data__t.html">fixup_data_t</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfixup__handler__t.html">fixup_handler_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements the core behavior of a custom fixup.  <a href="structfixup__handler__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfixup__info__t.html">fixup_info_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Collect fixup records for the specified range.  <a href="structfixup__info__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a437982072ecec0bc1fb56ed65808b8ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a437982072ecec0bc1fb56ed65808b8ff"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a437982072ecec0bc1fb56ed65808b8ff">is_fixup_custom</a> (<a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a> type)</td></tr>
<tr class="memdesc:a437982072ecec0bc1fb56ed65808b8ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is fixup processed by processor module? <br /></td></tr>
<tr class="separator:a437982072ecec0bc1fb56ed65808b8ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86151adf9a021e455eb27a58b9bba553"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86151adf9a021e455eb27a58b9bba553"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a86151adf9a021e455eb27a58b9bba553">get_fixup</a> (<a class="el" href="structfixup__data__t.html">fixup_data_t</a> *fd, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> source)</td></tr>
<tr class="memdesc:a86151adf9a021e455eb27a58b9bba553"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get fixup information. <br /></td></tr>
<tr class="separator:a86151adf9a021e455eb27a58b9bba553"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7185b96f4f59fd2f11e4cfa6118e1611"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7185b96f4f59fd2f11e4cfa6118e1611"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a7185b96f4f59fd2f11e4cfa6118e1611">exists_fixup</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> source)</td></tr>
<tr class="memdesc:a7185b96f4f59fd2f11e4cfa6118e1611"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check that a fixup exists at the given address. <br /></td></tr>
<tr class="separator:a7185b96f4f59fd2f11e4cfa6118e1611"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16e38ac5dc6d9ab1620b0dc0dbcd107f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a16e38ac5dc6d9ab1620b0dc0dbcd107f">set_fixup</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> source, const <a class="el" href="structfixup__data__t.html">fixup_data_t</a> &amp;fd)</td></tr>
<tr class="memdesc:a16e38ac5dc6d9ab1620b0dc0dbcd107f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set fixup information.  <a href="#a16e38ac5dc6d9ab1620b0dc0dbcd107f">More...</a><br /></td></tr>
<tr class="separator:a16e38ac5dc6d9ab1620b0dc0dbcd107f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1850e31eab2d3eb416d94f8d1b70fe2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1850e31eab2d3eb416d94f8d1b70fe2a"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a1850e31eab2d3eb416d94f8d1b70fe2a">del_fixup</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> source)</td></tr>
<tr class="memdesc:a1850e31eab2d3eb416d94f8d1b70fe2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete fixup information. <br /></td></tr>
<tr class="separator:a1850e31eab2d3eb416d94f8d1b70fe2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac18e1843b682851009998cc96f221249"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac18e1843b682851009998cc96f221249"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> const <a class="el" href="structfixup__handler__t.html">fixup_handler_t</a> *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#ac18e1843b682851009998cc96f221249">get_fixup_handler</a> (<a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a> type)</td></tr>
<tr class="memdesc:ac18e1843b682851009998cc96f221249"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get handler of standard or custom fixup. <br /></td></tr>
<tr class="separator:ac18e1843b682851009998cc96f221249"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0a42c2b927e6a87c6bfbc97694e5546"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#ab0a42c2b927e6a87c6bfbc97694e5546">apply_fixup</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> item_ea, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> fixup_ea, int n, bool is_macro)</td></tr>
<tr class="memdesc:ab0a42c2b927e6a87c6bfbc97694e5546"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use fixup information for an address.  <a href="#ab0a42c2b927e6a87c6bfbc97694e5546">More...</a><br /></td></tr>
<tr class="separator:ab0a42c2b927e6a87c6bfbc97694e5546"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae68a51805b27c4eae6e0b8efa2a32880"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#aef265b11f25357d520dcfd40aa8c18f3">uval_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#ae68a51805b27c4eae6e0b8efa2a32880">get_fixup_value</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea, <a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a> type)</td></tr>
<tr class="memdesc:ae68a51805b27c4eae6e0b8efa2a32880"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the operand value.  <a href="#ae68a51805b27c4eae6e0b8efa2a32880">More...</a><br /></td></tr>
<tr class="separator:ae68a51805b27c4eae6e0b8efa2a32880"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a07510903124f52ac5c9fd57496a4b2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a2a07510903124f52ac5c9fd57496a4b2">patch_fixup_value</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea, const <a class="el" href="structfixup__data__t.html">fixup_data_t</a> &amp;fd)</td></tr>
<tr class="memdesc:a2a07510903124f52ac5c9fd57496a4b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Patch the fixup bytes.  <a href="#a2a07510903124f52ac5c9fd57496a4b2">More...</a><br /></td></tr>
<tr class="separator:a2a07510903124f52ac5c9fd57496a4b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1a3cf324852ff00e0a124a2274d6c32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1a3cf324852ff00e0a124a2274d6c32"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> const char *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#ae1a3cf324852ff00e0a124a2274d6c32">get_fixup_desc</a> (<a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce">qstring</a> *buf, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> source, const <a class="el" href="structfixup__data__t.html">fixup_data_t</a> &amp;fd)</td></tr>
<tr class="memdesc:ae1a3cf324852ff00e0a124a2274d6c32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get FIXUP description comment. <br /></td></tr>
<tr class="separator:ae1a3cf324852ff00e0a124a2274d6c32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e045ed2795cce5645c2b795a189d558"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a8e045ed2795cce5645c2b795a189d558">calc_fixup_size</a> (<a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a> type)</td></tr>
<tr class="memdesc:a8e045ed2795cce5645c2b795a189d558"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate size of fixup in bytes (the number of bytes the fixup patches)  <a href="#a8e045ed2795cce5645c2b795a189d558">More...</a><br /></td></tr>
<tr class="separator:a8e045ed2795cce5645c2b795a189d558"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac712904b63bf9a58182c0260d781c675"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac712904b63bf9a58182c0260d781c675"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><b>get_fixups</b> (<a class="el" href="classqvector.html">fixups_t</a> *out, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea, <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> size)</td></tr>
<tr class="separator:ac712904b63bf9a58182c0260d781c675"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36a53820023781f2b57cb31920d7c6b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36a53820023781f2b57cb31920d7c6b8"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a36a53820023781f2b57cb31920d7c6b8">contains_fixups</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea, <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> size)</td></tr>
<tr class="memdesc:a36a53820023781f2b57cb31920d7c6b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does the specified address range contain any fixup information? <br /></td></tr>
<tr class="separator:a36a53820023781f2b57cb31920d7c6b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2df9b7d78085ab2e921f34084677e314"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a2df9b7d78085ab2e921f34084677e314">gen_fix_fixups</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> from, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> to, <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> size)</td></tr>
<tr class="memdesc:a2df9b7d78085ab2e921f34084677e314"><td class="mdescLeft">&#160;</td><td class="mdescRight">Relocate the bytes with fixup information once more (generic function).  <a href="#a2df9b7d78085ab2e921f34084677e314">More...</a><br /></td></tr>
<tr class="separator:a2df9b7d78085ab2e921f34084677e314"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Enumerate addresses with fixup information:</div></td></tr>
<tr class="memitem:ad434af144ea41201b88c3aa9c7a3eaf1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad434af144ea41201b88c3aa9c7a3eaf1"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><b>get_first_fixup_ea</b> (void)</td></tr>
<tr class="separator:ad434af144ea41201b88c3aa9c7a3eaf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1171b1258513ca76e41db29b65a384f0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1171b1258513ca76e41db29b65a384f0"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><b>get_next_fixup_ea</b> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea)</td></tr>
<tr class="separator:a1171b1258513ca76e41db29b65a384f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31bcb4a6f4c4b8877585f26841f62bb8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31bcb4a6f4c4b8877585f26841f62bb8"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><b>get_prev_fixup_ea</b> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea)</td></tr>
<tr class="separator:a31bcb4a6f4c4b8877585f26841f62bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">std_get_value()</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>This internal function takes <a class="el" href="group__fh__options.html">Tuning options</a> to determine how to get the operand value.</p>
<p>It is opposite in meaning to the `std_patch_value()`. 1) it gets the <a class="el" href="group__fh__options.html#gae7b3073ac6e4a2099b965824e0c1966d" title="size in bytes ">fixup_handler_t::size</a> bytes at the given address, 2) it shifts the result left by <a class="el" href="group__fh__options.html#ga6de49b5dbb84d7af99012416767d288b" title="number of bits to shift right before patching. ">fixup_handler_t::shift</a> bits, 3) it returns the rightmost <a class="el" href="group__fh__options.html#gaf430f824beaa0786e687e16756554065" title="number of significant bits before shifting ">fixup_handler_t::width</a> bits as a signed value. </p>
</div></td></tr>
<tr class="memitem:a718c4e75f94fa9cbe5708c77a8061ff4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a718c4e75f94fa9cbe5708c77a8061ff4">register_custom_fixup</a> (const <a class="el" href="structfixup__handler__t.html">fixup_handler_t</a> *cfh)</td></tr>
<tr class="memdesc:a718c4e75f94fa9cbe5708c77a8061ff4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a new custom fixup.  <a href="#a718c4e75f94fa9cbe5708c77a8061ff4">More...</a><br /></td></tr>
<tr class="separator:a718c4e75f94fa9cbe5708c77a8061ff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e61d4027bed174c5e4cbc16a6ef8432"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a2e61d4027bed174c5e4cbc16a6ef8432">unregister_custom_fixup</a> (<a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a> type)</td></tr>
<tr class="memdesc:a2e61d4027bed174c5e4cbc16a6ef8432"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unregister a new custom fixup format.  <a href="#a2e61d4027bed174c5e4cbc16a6ef8432">More...</a><br /></td></tr>
<tr class="separator:a2e61d4027bed174c5e4cbc16a6ef8432"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a099e7027b6c7b540770dda3823cd71e0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a099e7027b6c7b540770dda3823cd71e0">find_custom_fixup</a> (const char *name)</td></tr>
<tr class="memdesc:a099e7027b6c7b540770dda3823cd71e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get id of a custom fixup handler.  <a href="#a099e7027b6c7b540770dda3823cd71e0">More...</a><br /></td></tr>
<tr class="separator:a099e7027b6c7b540770dda3823cd71e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga7d5afa5124de3de63a567b93034e922e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_i_x_u_p_f__.html#ga7d5afa5124de3de63a567b93034e922e">FIXUPF_REL</a>&#160;&#160;&#160;0x0001</td></tr>
<tr class="memdesc:ga7d5afa5124de3de63a567b93034e922e"><td class="mdescLeft">&#160;</td><td class="mdescRight">fixup is relative to the linear address `base'.  <a href="group___f_i_x_u_p_f__.html#ga7d5afa5124de3de63a567b93034e922e">More...</a><br /></td></tr>
<tr class="separator:ga7d5afa5124de3de63a567b93034e922e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae5df6c8b7d32965534929591332ed0b2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_i_x_u_p_f__.html#gae5df6c8b7d32965534929591332ed0b2">FIXUPF_EXTDEF</a>&#160;&#160;&#160;0x0002</td></tr>
<tr class="memdesc:gae5df6c8b7d32965534929591332ed0b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">target is a location (otherwise - segment).  <a href="group___f_i_x_u_p_f__.html#gae5df6c8b7d32965534929591332ed0b2">More...</a><br /></td></tr>
<tr class="separator:gae5df6c8b7d32965534929591332ed0b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga67d48e9da47eb2bdc927759d11afca52"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_i_x_u_p_f__.html#ga67d48e9da47eb2bdc927759d11afca52">FIXUPF_UNUSED</a>&#160;&#160;&#160;0x0004</td></tr>
<tr class="memdesc:ga67d48e9da47eb2bdc927759d11afca52"><td class="mdescLeft">&#160;</td><td class="mdescRight">fixup is ignored by IDA  <a href="group___f_i_x_u_p_f__.html#ga67d48e9da47eb2bdc927759d11afca52">More...</a><br /></td></tr>
<tr class="separator:ga67d48e9da47eb2bdc927759d11afca52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga902ed4e52cff9d3f0df562c4f7254390"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga902ed4e52cff9d3f0df562c4f7254390"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_i_x_u_p_f__.html#ga902ed4e52cff9d3f0df562c4f7254390">FIXUPF_CREATED</a>&#160;&#160;&#160;0x0008</td></tr>
<tr class="memdesc:ga902ed4e52cff9d3f0df562c4f7254390"><td class="mdescLeft">&#160;</td><td class="mdescRight">fixup was not present in the input file <br /></td></tr>
<tr class="separator:ga902ed4e52cff9d3f0df562c4f7254390"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2d6ff800fd5fd5602e35a6fac05bb5b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_i_x_u_p_f__.html#gaa2d6ff800fd5fd5602e35a6fac05bb5b">FIXUPF_LOADER_MASK</a>&#160;&#160;&#160;0xF0000000</td></tr>
<tr class="memdesc:gaa2d6ff800fd5fd5602e35a6fac05bb5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">additional flags.  <a href="group___f_i_x_u_p_f__.html#gaa2d6ff800fd5fd5602e35a6fac05bb5b">More...</a><br /></td></tr>
<tr class="separator:gaa2d6ff800fd5fd5602e35a6fac05bb5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1e127f488352c7179afd0ad1d4cbad03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_h_f__.html#ga1e127f488352c7179afd0ad1d4cbad03">FHF_VERIFY</a>&#160;&#160;&#160;0x0001</td></tr>
<tr class="memdesc:ga1e127f488352c7179afd0ad1d4cbad03"><td class="mdescLeft">&#160;</td><td class="mdescRight">verify that the value fits into `width'  <a href="group___f_h_f__.html#ga1e127f488352c7179afd0ad1d4cbad03">More...</a><br /></td></tr>
<tr class="separator:ga1e127f488352c7179afd0ad1d4cbad03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Fixup standard types</div></td></tr>
<tr class="memitem:ae38203e0680cf6c514fd6b5cb2e4b4b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae38203e0680cf6c514fd6b5cb2e4b4b5"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#ae38203e0680cf6c514fd6b5cb2e4b4b5">FIXUP_OFF8</a>&#160;&#160;&#160;13</td></tr>
<tr class="memdesc:ae38203e0680cf6c514fd6b5cb2e4b4b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">8-bit offset <br /></td></tr>
<tr class="separator:ae38203e0680cf6c514fd6b5cb2e4b4b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7547b563be7f9c13fd88097a42653f17"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7547b563be7f9c13fd88097a42653f17"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a7547b563be7f9c13fd88097a42653f17">FIXUP_OFF16</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:a7547b563be7f9c13fd88097a42653f17"><td class="mdescLeft">&#160;</td><td class="mdescRight">16-bit offset <br /></td></tr>
<tr class="separator:a7547b563be7f9c13fd88097a42653f17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44a3aec11e00512000ea1828df038de1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44a3aec11e00512000ea1828df038de1"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a44a3aec11e00512000ea1828df038de1">FIXUP_SEG16</a>&#160;&#160;&#160;2</td></tr>
<tr class="memdesc:a44a3aec11e00512000ea1828df038de1"><td class="mdescLeft">&#160;</td><td class="mdescRight">16-bit base&ndash;logical segment base (selector) <br /></td></tr>
<tr class="separator:a44a3aec11e00512000ea1828df038de1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fcf51b5a7780cd38e48b2a3dee5fcc0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a0fcf51b5a7780cd38e48b2a3dee5fcc0">FIXUP_PTR16</a>&#160;&#160;&#160;3</td></tr>
<tr class="memdesc:a0fcf51b5a7780cd38e48b2a3dee5fcc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">32-bit long pointer (16-bit base:16-bit  <a href="#a0fcf51b5a7780cd38e48b2a3dee5fcc0">More...</a><br /></td></tr>
<tr class="separator:a0fcf51b5a7780cd38e48b2a3dee5fcc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cc416569d664d93e71ff31fe94440cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cc416569d664d93e71ff31fe94440cf"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a6cc416569d664d93e71ff31fe94440cf">FIXUP_OFF32</a>&#160;&#160;&#160;4</td></tr>
<tr class="memdesc:a6cc416569d664d93e71ff31fe94440cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">32-bit offset <br /></td></tr>
<tr class="separator:a6cc416569d664d93e71ff31fe94440cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fe61403139ce4ca3b1ddc20498621aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fe61403139ce4ca3b1ddc20498621aa"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a8fe61403139ce4ca3b1ddc20498621aa">FIXUP_PTR32</a>&#160;&#160;&#160;5</td></tr>
<tr class="memdesc:a8fe61403139ce4ca3b1ddc20498621aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">48-bit pointer (16-bit base:32-bit offset) <br /></td></tr>
<tr class="separator:a8fe61403139ce4ca3b1ddc20498621aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e43d02f52d910cd0ef40bad083c845f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e43d02f52d910cd0ef40bad083c845f"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a2e43d02f52d910cd0ef40bad083c845f">FIXUP_HI8</a>&#160;&#160;&#160;6</td></tr>
<tr class="memdesc:a2e43d02f52d910cd0ef40bad083c845f"><td class="mdescLeft">&#160;</td><td class="mdescRight">high 8 bits of 16bit offset <br /></td></tr>
<tr class="separator:a2e43d02f52d910cd0ef40bad083c845f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa988bb9a8415c41bb253474b43724d81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa988bb9a8415c41bb253474b43724d81"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#aa988bb9a8415c41bb253474b43724d81">FIXUP_HI16</a>&#160;&#160;&#160;7</td></tr>
<tr class="memdesc:aa988bb9a8415c41bb253474b43724d81"><td class="mdescLeft">&#160;</td><td class="mdescRight">high 16 bits of 32bit offset <br /></td></tr>
<tr class="separator:aa988bb9a8415c41bb253474b43724d81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2afefe915e0eed29f30f1f2ec72b5e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2afefe915e0eed29f30f1f2ec72b5e0"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#ad2afefe915e0eed29f30f1f2ec72b5e0">FIXUP_LOW8</a>&#160;&#160;&#160;8</td></tr>
<tr class="memdesc:ad2afefe915e0eed29f30f1f2ec72b5e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">low 8 bits of 16bit offset <br /></td></tr>
<tr class="separator:ad2afefe915e0eed29f30f1f2ec72b5e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf6f3fa8ddcb0d04df160bdd66d5b095"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf6f3fa8ddcb0d04df160bdd66d5b095"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#aaf6f3fa8ddcb0d04df160bdd66d5b095">FIXUP_LOW16</a>&#160;&#160;&#160;9</td></tr>
<tr class="memdesc:aaf6f3fa8ddcb0d04df160bdd66d5b095"><td class="mdescLeft">&#160;</td><td class="mdescRight">low 16 bits of 32bit offset <br /></td></tr>
<tr class="separator:aaf6f3fa8ddcb0d04df160bdd66d5b095"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6ba6648875bb91c86391fcd5455c746"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6ba6648875bb91c86391fcd5455c746"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#ae6ba6648875bb91c86391fcd5455c746">V695_FIXUP_VHIGH</a>&#160;&#160;&#160;10</td></tr>
<tr class="memdesc:ae6ba6648875bb91c86391fcd5455c746"><td class="mdescLeft">&#160;</td><td class="mdescRight">obsolete <br /></td></tr>
<tr class="separator:ae6ba6648875bb91c86391fcd5455c746"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26e49e6cacd22999bc70151d4f70bf04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26e49e6cacd22999bc70151d4f70bf04"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a26e49e6cacd22999bc70151d4f70bf04">V695_FIXUP_VLOW</a>&#160;&#160;&#160;11</td></tr>
<tr class="memdesc:a26e49e6cacd22999bc70151d4f70bf04"><td class="mdescLeft">&#160;</td><td class="mdescRight">obsolete <br /></td></tr>
<tr class="separator:a26e49e6cacd22999bc70151d4f70bf04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b4f4977e68210480eb01324c682b10b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b4f4977e68210480eb01324c682b10b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#a3b4f4977e68210480eb01324c682b10b">FIXUP_OFF64</a>&#160;&#160;&#160;12</td></tr>
<tr class="memdesc:a3b4f4977e68210480eb01324c682b10b"><td class="mdescLeft">&#160;</td><td class="mdescRight">64-bit offset <br /></td></tr>
<tr class="separator:a3b4f4977e68210480eb01324c682b10b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa42a23251d64692899bce5bc115e822c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa42a23251d64692899bce5bc115e822c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#aa42a23251d64692899bce5bc115e822c">FIXUP_CUSTOM</a>&#160;&#160;&#160;0x8000</td></tr>
<tr class="memdesc:aa42a23251d64692899bce5bc115e822c"><td class="mdescLeft">&#160;</td><td class="mdescRight">start of the custom types range <br /></td></tr>
<tr class="separator:aa42a23251d64692899bce5bc115e822c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ac369f50f71892a7215812ab85eb45860"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="pro_8h.html#a05f6b0ae8f6a6e135b0e290c25fe0e4e">uint16</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a></td></tr>
<tr class="memdesc:ac369f50f71892a7215812ab85eb45860"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fixup information structure.  <a href="#ac369f50f71892a7215812ab85eb45860">More...</a><br /></td></tr>
<tr class="separator:ac369f50f71892a7215812ab85eb45860"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26561dc38a14d505ddad5ba807f269bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26561dc38a14d505ddad5ba807f269bb"></a>
typedef <a class="el" href="classqvector.html">qvector</a>&lt; <a class="el" href="structfixup__info__t.html">fixup_info_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>fixups_t</b></td></tr>
<tr class="separator:a26561dc38a14d505ddad5ba807f269bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a0fcf51b5a7780cd38e48b2a3dee5fcc0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FIXUP_PTR16&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>32-bit long pointer (16-bit base:16-bit </p>
<p>offset) </p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="ac369f50f71892a7215812ab85eb45860"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="pro_8h.html#a05f6b0ae8f6a6e135b0e290c25fe0e4e">uint16</a> <a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Fixup information structure. </p>
<p>see <a class="el" href="group__fixup__type__t.html">Types of fixups</a> </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a16e38ac5dc6d9ab1620b0dc0dbcd107f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> set_fixup </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structfixup__data__t.html">fixup_data_t</a> &amp;&#160;</td>
          <td class="paramname"><em>fd</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set fixup information. </p>
<p>You should fill <a class="el" href="structfixup__data__t.html">fixup_data_t</a> and call this function and the kernel will remember information in the database. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">source</td><td>the fixup source address, i.e. the address modified by the fixup </td></tr>
    <tr><td class="paramname">fd</td><td>fixup data </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab0a42c2b927e6a87c6bfbc97694e5546"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> apply_fixup </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>item_ea</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>fixup_ea</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>is_macro</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Use fixup information for an address. </p>
<p>This function converts item_ea flags to offsets/segments. For undefined bytes, you may set item_ea == fixup_ea. In this case this function will create an item (byte, word, dword) there. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">item_ea</td><td>start address of item to modify </td></tr>
    <tr><td class="paramname">fixup_ea</td><td>address of fixup record </td></tr>
    <tr><td class="paramname">n</td><td>number of operand. may be 0, 1, 2 </td></tr>
    <tr><td class="paramname">is_macro</td><td>is the instruction at 'item_ea' a macro? if yes, then partial fixups (HIGH, LOW) won't be applied </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">false</td><td>no fixup at fixup_ea or it has <a class="el" href="group___f_i_x_u_p_f__.html#ga67d48e9da47eb2bdc927759d11afca52" title="fixup is ignored by IDA ">FIXUPF_UNUSED</a> flag </td></tr>
    <tr><td class="paramname">true</td><td>ok, the fixup information was applied </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae68a51805b27c4eae6e0b8efa2a32880"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#aef265b11f25357d520dcfd40aa8c18f3">uval_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_fixup_value </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a>&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the operand value. </p>
<p>This function get fixup bytes from data or an instruction at `ea' and convert them to the operand value (maybe partially). It is opposite in meaning to the `patch_fixup_value()`. For example, FIXUP_HI8 read a byte at `ea' and shifts it left by 8 bits, or AArch64's custom fixup BRANCH26 get low 26 bits of the insn at `ea' and shifts it left by 2 bits. This function is mainly used to get a relocation addend. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ea</td><td>address to get fixup bytes from, the size of the fixup bytes depends on the fixup type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__fh__options.html#gae7b3073ac6e4a2099b965824e0c1966d" title="size in bytes ">fixup_handler_t::size</a> </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>fixup type </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">operand</td><td>value </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a2a07510903124f52ac5c9fd57496a4b2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> patch_fixup_value </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>ea</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structfixup__data__t.html">fixup_data_t</a> &amp;&#160;</td>
          <td class="paramname"><em>fd</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Patch the fixup bytes. </p>
<p>This function updates data or an instruction at `ea' to the fixup bytes. For example, FIXUP_HI8 updates a byte at `ea' to the high byte of `fd-&gt;off', or AArch64's custom fixup BRANCH26 updates low 26 bits of the insn at `ea' to the value of `fd-&gt;off' shifted right by 2. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ea</td><td>address where data are changed, the size of the changed data depends on the fixup type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__fh__options.html#gae7b3073ac6e4a2099b965824e0c1966d" title="size in bytes ">fixup_handler_t::size</a> </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fd</td><td>fixup data </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">false</td><td>the fixup bytes do not fit (e.g. `fd-&gt;off' is greater than 0xFFFFFFC for BRANCH26). The database is changed even in this case. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8e045ed2795cce5645c2b795a189d558"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> calc_fixup_size </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a>&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculate size of fixup in bytes (the number of bytes the fixup patches) </p>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">-1</td><td>means error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a718c4e75f94fa9cbe5708c77a8061ff4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> register_custom_fixup </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structfixup__handler__t.html">fixup_handler_t</a> *&#160;</td>
          <td class="paramname"><em>cfh</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Register a new custom fixup. </p>
<p>This function must be called by a processor module or plugin, but not by a file loader. File loaders should use <a class="el" href="fixup_8hpp.html#a099e7027b6c7b540770dda3823cd71e0" title="Get id of a custom fixup handler. ">find_custom_fixup()</a> function to find the handler created by the processor module. </p><dl class="section return"><dt>Returns</dt><dd>id of the new custom fixup handler with FIXUP_CUSTOM bit set or 0 (e.g. when the custom fixup handler with the same name was already registered). </dd></dl>

</div>
</div>
<a class="anchor" id="a2e61d4027bed174c5e4cbc16a6ef8432"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> unregister_custom_fixup </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a>&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Unregister a new custom fixup format. </p>
<p>Should be called by the processor module before the database gets closed. </p>

</div>
</div>
<a class="anchor" id="a099e7027b6c7b540770dda3823cd71e0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="fixup_8hpp.html#ac369f50f71892a7215812ab85eb45860">fixup_type_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> find_custom_fixup </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get id of a custom fixup handler. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>name of the custom fixup handler </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>id with FIXUP_CUSTOM bit set or 0 </dd></dl>

</div>
</div>
<a class="anchor" id="a2df9b7d78085ab2e921f34084677e314"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> gen_fix_fixups </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>to</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a>&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Relocate the bytes with fixup information once more (generic function). </p>
<p>This function may be called from <a class="el" href="structloader__t.html#a7a329922101a4e28a2b7018e565a3b5d" title="Take care of a moved segment (fix up relocations, for example). ">loader_t::move_segm()</a> if it suits the goal. If <a class="el" href="structloader__t.html#a7a329922101a4e28a2b7018e565a3b5d" title="Take care of a moved segment (fix up relocations, for example). ">loader_t::move_segm</a> is not defined then this function will be called automatically when moving segments or rebasing the entire program. Special parameter values (from = BADADDR, size = 0, to = delta) are used when the function is called from rebase_program(delta). </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>
